/*
 * Copyright 2011 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.foreveross.bsl.common.mustache;

import java.io.Writer;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.view.AbstractTemplateView;

import com.foreveross.bsl.auth.Auth;
import com.foreveross.bsl.auth.constant.Constant;
import com.foreveross.bsl.auth.integration.ChannelIntegrationBuilder;
import com.samskivert.mustache.Template;

/**
 * @author Sean Scanlon <sean.scanlon@gmail.com>
 * 
 */
public class MustacheView extends AbstractTemplateView {

    private Template template;
    private String requestContextAttribute;

    @Override
    protected void renderMergedTemplateModel(Map<String, Object> model, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        response.setContentType(getContentType());
        final Writer writer = response.getWriter();
        try {
        	String ticket = (String)request.getSession().getAttribute(Constant.SESSION_KEY);
        	if(null==ticket || ticket.isEmpty()){
        		model.put(requestContextAttribute, request.getContextPath());
        	}else{
        		Auth auth=(Auth)ChannelIntegrationBuilder.newInstance().getInfo(ticket);
        		model.put(requestContextAttribute, request.getContextPath()+"/"+auth.getAccountUsername());
        	}
            template.execute(model, writer);
        } finally {
            writer.flush();
        }
    }

    public void setTemplate(Template template) {
        this.template = template;
    }

    public Template getTemplate() {
        return template;
    }

	public String getRequestContextAttribute() {
		return requestContextAttribute;
	}

	public void setRequestContextAttribute(String requestContextAttribute) {
		this.requestContextAttribute = requestContextAttribute;
	}
    
    
}
